package com.eastedu.report.template;


import com.eastedu.common.page.PageResult;
import com.eastedu.common.page.Pageable;
import com.eastedu.report.common.model.po.TemplateConfigPO;
import com.eastedu.report.common.model.vo.ReportTemplateUploadVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * The interface Report template configuration.
 *
 * @author ZhenZhong
 */
public interface ReportTemplateConfiguration {


    /**
     * 添加模版
     *
     * @param vo the vo
     * @throws IOException the io exception
     */
    void add(ReportTemplateUploadVO vo) throws IOException;

    /**
     * 修改模版
     *
     * @param templateId the template id
     * @param file       the file
     * @throws IOException the io exception
     */
    void update(Long templateId, MultipartFile file) throws IOException;

    /**
     * 删除模版
     *
     * @param templateId the template id
     */
    void delete(Long templateId);

    /**
     * 根据ID查询模版
     *
     * @param templateId the template id
     * @return template config po
     */
    TemplateConfigPO get(Long templateId);

    /**
     * 根据code查询模版
     *
     * @param templateCode the template code
     * @return template config po
     */
    TemplateConfigPO get(String templateCode);

    /**
     * 列表
     *
     * @param page the page
     * @return list page result
     */
    PageResult<TemplateConfigPO> list(Pageable page);


    /**
     * 总数
     *
     * @return integer long
     */
    Long count();
}
